
package com.be.beadmin.project.service;

import com.be.beadmin.common.entity.PageEntity;
import com.be.beadmin.project.dto.input.InfoAndPage;
import com.be.beadmin.project.dto.input.MasterPlanDto;
import com.be.beadmin.project.dto.input.MasterPlanStageDto;
import com.be.beadmin.project.dto.input.PlanStageDto;
import com.be.beadmin.project.dto.output.MasterPlanAndStageEx;
import com.be.beadmin.project.dto.output.MasterPlanEx;
import com.be.beadmin.project.entity.PlanStage;
import org.springframework.data.domain.Page;

import java.util.List;

/**
* @description 服务接口
* @author zjm
* @date 2023-01-12
**/
public interface MasterPlanService {

    /**
    * 分页的查询接口
    * @param pageEntity
    * @return
    */
    Page<MasterPlanEx> getMasterPlanByPage(PageEntity pageEntity);

    /**
     * @param infoId
     * @return
     */
    int addMasterPlan(String infoId);

    /**
    * @param masterPlanDto
    */
    void updateMasterPlan(MasterPlanDto masterPlanDto);

    /**
    * @param id
    */
    void delMasterPlan(String id);

    /**
    * 删除多个角色
    * @param ids
    */
    void delMasterPlans (List<String> ids);

    MasterPlanStageDto[] getMasterPlanStageInfo();

    /**
     * 根据项目ID获取项目计划分页信息
     * @param infoAndPage
     * @return
     */
    Page<MasterPlanEx> getMasterPlanByPageAndInfoId(InfoAndPage infoAndPage);

    /**
     * 根据项目ID获取各阶段信息
     * @param infoId
     * @return
     */
    List<PlanStage> getStagesByInfoId(String infoId);


    List<PlanStage> getStagesByInfoBatchPlanId(String batchPlanId);
    /**
     * 获取项目计划及各阶段分页信息
     * @param pageEntity
     * @return
     */
    Page<MasterPlanAndStageEx> getMasterPlanAndStageByPage(PageEntity pageEntity);

    /**
     * 修改一个项目主计划各阶段时间
     * @param planStageDtos
     */
    void updateMasterPlanStageTime(List<PlanStageDto> planStageDtos);
}